package com.bw.ivideo.test_fragment

import android.graphics.Color
import android.os.Bundle
import android.provider.CalendarContract.Colors
import androidx.activity.enableEdgeToEdge
import androidx.appcompat.app.AppCompatActivity
import androidx.constraintlayout.widget.ConstraintLayout
import androidx.core.view.ViewCompat
import androidx.core.view.WindowInsetsCompat
import androidx.fragment.app.Fragment
import androidx.fragment.app.FragmentManager
import androidx.fragment.app.FragmentPagerAdapter
import androidx.fragment.app.FragmentStatePagerAdapter
import androidx.viewpager.widget.ViewPager
import androidx.viewpager2.adapter.FragmentStateAdapter
import androidx.viewpager2.widget.ViewPager2
import com.bw.ivideo.R
import com.gyf.immersionbar.BarHide
import com.gyf.immersionbar.ImmersionBar
import com.jaeger.library.StatusBarUtil

/**
 * viewPager2:默认懒加载
 * viewpager：默认预加载，使用BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT：只有当前fragment显示的时候才会执行onResume
 *
 * 企业项目：
 * 1.第一次显示fragment：速度
 *  onCreateView：
 *  (1)加载本地数据，优先显示本地数据
 *  (2)静默加载网络数据:成功显示网络新数据，失败不用动
 * 2.来回切换fragment：显示新数据
 *  onResume：请求新数据展示对应ui
 *
 * 3.快速显示首页数据
 * (1)加载本地数据，优先显示本地数据
 * (2)application的onCreate中采用异步提前请求首页的数据，当显示首页的时候显示网络数据
 * (3)首页Recyclerview多布局，使用DiffUtil对比本地数据据和网络数据差异，更新局部ui
 * (4)首页UI布局优化：
 *  减少层级嵌套
 *  使用include、merge标签
 *  使用ViewStub做UI懒加载：部分ui不加载，通过java代码实现懒加载
 *
 *
 *
 */
class FragmentActivity : AppCompatActivity() {
    private lateinit var mViewPager2: ViewPager2
    private lateinit var mAdapter2: MyFragmentPagerAdapter2
    private lateinit var con:ConstraintLayout
    private lateinit var mViewPager: ViewPager
    private lateinit var mAdapter: MyFragmentPagerAdapter
    private val mFragments = arrayListOf<Fragment>(
        BlankFragment.newInstance("11", ""),
        BlankFragment.newInstance("22", ""),
        BlankFragment.newInstance("33", "")
    )
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        enableEdgeToEdge()
        setContentView(R.layout.activity_fragment)
        con = findViewById(R.id.main)
        mViewPager2 = findViewById(R.id.view_pager2)
        //设置状态栏
//        StatusBarUtil.setColor(this, Color.RED,255)
        //沉浸式状态栏
//        StatusBarUtil.setTranslucentForImageView(this,con)

        //设置状态栏颜色
//        ImmersionBar.with(this)
//            .statusBarColor(com.bw.lib_common.R.color.color_d8000f)
//            .statusBarDarkFont(false) //是否为深色文字
//            .init()
        //沉浸式状态栏
//        ImmersionBar.with(this)
//            .transparentStatusBar()
//            .fitsSystemWindows(false)
//            .init()

        ImmersionBar.with(this)
            .hideBar(BarHide.FLAG_HIDE_BAR) // 隐藏状态栏和导航栏
            .init()


//        mViewPager2 = findViewById(R.id.view_pager2)
//        mViewPager = findViewById(R.id.view_pager)
//        mAdapter2 = MyFragmentPagerAdapter2(this)
//        mViewPager2.adapter = mAdapter2
//        mViewPager2.offscreenPageLimit = 1

        mViewPager = findViewById(R.id.view_pager)
        mAdapter = MyFragmentPagerAdapter(supportFragmentManager)
        mViewPager.adapter = mAdapter


    }

    //viewpager2适配器
    inner class MyFragmentPagerAdapter2(fragmentActivity: FragmentActivity) : FragmentStateAdapter(fragmentActivity) {
        override fun getItemCount(): Int {
            return mFragments.size
        }

        override fun createFragment(position: Int): Fragment {
            return mFragments[position]
        }
    }
    //viewPager适配器
    inner class MyFragmentPagerAdapter(fm:FragmentManager) : FragmentStatePagerAdapter(fm, FragmentStatePagerAdapter.BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT) {
        override fun getCount(): Int {
            return mFragments.size
        }

        override fun getItem(p0: Int): Fragment {
            return mFragments[p0]
        }
    }


}